# 第一阶段：构建阶段
# 使用官方的 Go 镜像作为基础镜像
FROM golang:1.23-alpine AS builder

# 设置工作目录
WORKDIR /app

# 设置 goproxy 环境变量，使用七牛云的代理
ENV GOPROXY=https://goproxy.cn

# 复制 go.mod 和 go.sum 文件并下载依赖
COPY go.mod go.sum ./
RUN go mod download

# 复制所有源代码到工作目录
COPY . .

# 构建可执行文件，指定目标操作系统为 Linux
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w" -o gotransfer ./main.go

# 第二阶段：运行阶段
# 使用轻量级的 Alpine 镜像作为基础镜像
FROM alpine:latest

# 设置工作目录
WORKDIR /app

# 从构建阶段复制可执行文件
COPY --from=builder /app/gotransfer .

# 暴露应用程序使用的端口
EXPOSE 8080

# 定义容器启动时执行的命令
CMD ["./gotransfer"]